iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0

變數能不能在某一行使用,要看它宣告在哪裡。這個可以使用的範圍就叫做作用域。

來看看宣告在函式外的Myname。它位於程式最外層,所以後面的程式和函式都能取得它。

const Myname = "BETTY";

function showName() {
  const Hello = "我的名子是";
  console.log(Hello, Myname);
}

showName();

https://ithelp.ithome.com.tw/upload/images/20260924/20178696WZAwpvo3VP.png

message是在showName裡宣告的,只能在這個函式裡使用。函式執行完後,如果在外面寫console.log(message),程式就會出現message is not defined,因為外層不能直接取得函式內的變數。
https://ithelp.ithome.com.tw/upload/images/20260924/20178696zUD6Q3yOkN.png

showName();
console.log(Hello);

let與const也會受到大括號限制:

if (true) {
  const status = "進行中";
  console.log(status);
}

status只能用在if的大括號裡。離開大括號後就不能再取得,因此這種範圍稱為區塊作用域。

我們之前知道了,let 和 const 是不能進行重新宣告的,但是呢!這邊我們卻能這樣

const Myname = "BETTY";

function showName() {
  const Hello = "我的名子是";
  const Myname = "SANS";
  console.log(Hello, Myname);
}

showName();

https://ithelp.ithome.com.tw/upload/images/20260924/20178696eS53YKDgIb.png
在函式中我用完全相同的方式宣告了Myname卻不會出現問題,爾且相同的變數名稱中,就會取得內部的SANS,這是因為當在裡面的CONSOLE.LOG執行時就會去找說,他有沒有Myname這個變數,這裡沒有就在往外找,所以可以找到外層的Myname,不過呢,當裡面有宣告後,你就確實不能在同一區下再進行一次重新宣告
https://ithelp.ithome.com.tw/upload/images/20260924/201786966JJ2vMEMaq.png


上一篇
Day9 函式
下一篇
day11 字串
系列文
從頭開始的Javascript學習之旅 共 14 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言